iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
  • Currying

今天來談柯里化(Currying)
簡單來說,柯里化就是一個可以接收多個參數列表的函式編寫方式。
先看以下程式:

def sum(x: Int, y: Int) = x + y
sum(1, 2)    //Output = 3

這是一個普通的對兩個參數做加法的函式
經過柯里化之後:

def curriedSum(x: Int)(y: Int) = x + y
curriedSum(1)(2)    //Output = 3

先來解釋一下這個curriedSum函式是怎麼運作的
首先,當我們呼叫了curriedSum,實際上是呼叫了兩次sum函式
相當於:

def sum(x: Int) = (y: Int) => x + y
val a = sum(1)
a(2)    //Output = 3

這邊我們也可以用占位符語法表示
用底線當作第二個參數列表

def curriedSum(x: Int)(y: Int) = x + y
val first = curriedSum(2)_
first(2)    //Output = 4

今天就介紹到這邊


上一篇
[Day 13]Scala 函式與閉包 Part3
下一篇
[Day 15]Scala繼承與組合
系列文
連續30天 初學者介紹Scala語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言